package com.sale.goods.service;

import com.sale.common.mybatis.core.page.PageQuery;
import com.sale.common.mybatis.core.page.TableDataInfo;
import com.sale.goods.api.dto.ImparityGoodsDto;
import com.sale.goods.api.vo.GetDataByCodeGoodsVo;
import com.sale.goods.domain.dto.GoodsIncomeDto;
import com.sale.goods.domain.dto.ReceiptAndPaymentDocDto;
import com.sale.goods.domain.dto.single.GoodsIncomeSingle;
import com.sale.goods.domain.vo.GoodsIncomeVo;

import java.util.List;

/**
 * @Description 其他收入单
 * @Date 23-08-07
 * @Author hl
 **/
public interface IGoodsIncomeService {

    /**
     * 分页查询其他收入单
     *
     * @param goodsIncomeVo,pageQuery
     * @return 其他收入单集合
     */
    TableDataInfo<GoodsIncomeDto> selectIncomeList(GoodsIncomeVo goodsIncomeVo, PageQuery pageQuery);

    /**
     * 新增其他收入单
     *
     * @param goodsIncomeVo
     * @return int
     */
    int insertIncome(GoodsIncomeVo goodsIncomeVo) throws Exception;

    /**
     * 查询单个其他收入单
     *
     * @param incomeId
     * @return int
     */
    GoodsIncomeSingle selectIncomeById(long incomeId);

    /**
     * 删除其他收入单
     *
     * @param incomeId
     * @return int
     */
    int deleteIncomeById(Long incomeId);

    /**
     * 修改其他收入单
     *
     * @param goodsIncomeVo
     * @return int
     */
    int updateIncomeEdit(GoodsIncomeVo goodsIncomeVo);

    /**
     * 提交审核 其他收入单
     *
     * @param incomeId
     * @return int
     */
    int submitReview(Long incomeId);

    /**
     * 撤销审核 其他收入单
     *
     * @param incomeId
     * @return int
     */
    int deleteReview(Long incomeId);

    /**
     * 审核单据 其他收入单
     *
     * @param goodsIncomeVo
     * @return int
     */
    int goodSExamineReview(GoodsIncomeVo goodsIncomeVo) throws Exception;

    /**
     * 获取其他收入单 (弹框)
     */
    TableDataInfo<ReceiptAndPaymentDocDto> selectIncomePopList(GoodsIncomeVo goodsIncomeVo, PageQuery pageQuery);

    /**
     * 财务-核销单 通过获取未全部核销的其他收入单数据
     */
    List<ImparityGoodsDto> getNoVerificationList(GetDataByCodeGoodsVo getDataByCodeVo);
}
